#pragma once

#include <iostream>
#include <vector>

class Util
{
public:
    // 切割字符串: a\r\nbb\r\nccc\r\n\r\n
    // 函数cutString()用于切割字符串，将字符串s按照分隔符sep分割成多个子串，结果存储在out中
static void cutString(std::string s, const std::string& sep, std::vector<std::string>* out)
    {
        // start表示当前子串的起始位置
        std::size_t start = 0;
        // 遍历字符串s
        while(start < s.size())
        {
            // 查找下一个分隔符的位置
            auto pos = s.find(sep, start);
            // 如果没有找到分隔符，说明已经分割完毕
            if(pos == std::string::npos)
                break;
            // 从start到pos-1位置形成一个子串
            std::string sub = s.substr(start, pos - start);
            // 将子串添加到out中
            out->push_back(sub);
            // start更新为下一个子串的起始位置
            start += sub.size();
            // start跳过分隔符
            start += sep.size();
        }
        // 如果start小于s的长度，说明还有未分割的字符串，将其添加到out中
        if(start < s.size())
            out->push_back(s.substr(start));
    }
};